package com.tang.param_check.common.delegate;

import java.util.List;

/**
 * @Author tangyuan2meicloud.com
 * @DATE 2022/1/15 20:14
 * @Desc 顶层的管理类 （委派模式）
 * H  具体的处理类 （为Handler的字类 ）
 * 具体参见：@See Handler
 * R Result 返回值
 * P Paramter 处理的参数
 * @Remarks
 */
public abstract class Manager<H extends Handler, R, P> {
    protected List<H> handlers;

    public R handle(P parameter) {
        for (Handler handler : handlers) {
            if (handler.canHandler(parameter)) {
                return (R) handler.handler(parameter);
            }
        }
        return null;
    }
}
